// type类型 不能重名，命名冲突
// type 和 interface作用一致, type使用交叉符号来实现继承
type p = {
  name: string
  age: number
}

// type p = {
//   isSelf: boolean
// }

type p2 = p & {
  sex: string
  height: number
}

const person: Partial<p> = {
  name: '张三',
}

const person1: p2 = {
  name: '李四',
  age: 18,
  sex: '男',
  height: 180,
}

interface Dog {
  name: string
}
// interface可以同名，同名后合，适用于底层封装
interface Dog {
  age: number
}

const dog: Dog = {
  name: '小七',
  age: 2,
}

export { person, person1, dog }
